package com.example.month11.vp_tab.view;

import android.view.View;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.ViewPager;

// VP: 旋转动画
public class RotateTransform implements ViewPager.PageTransformer {
    public static final int MAX_ROTATE = 15; // 最大旋转角度15度。

    @Override
    public void transformPage(@NonNull View page, float position) {
        // 从a页面 --> b页面：变化规律。
        // a: position:(0, -1)
        // b: position:(1, 0)
        // b --> a
        // a: position:(-1, 0)
        // b: position:(0, 1)

        if (position < -1) {  // [-无穷大, -1]
            // 划到左边了
            page.setRotation(-MAX_ROTATE);
            page.setPivotY(page.getHeight());
            page.setPivotX(page.getWidth());
        } else if (position <= 1) { // [-1, 1]
            if (position < 0) { // page：左边的页面
                // 左边view 的旋转中心。 position的范围 a->b时(0,-1)
                page.setPivotY(page.getHeight());
                // x:0.5w ~ 1w
                page.setPivotX(0.5f * page.getWidth() + 0.5f * (-position) * page.getWidth());
                // (0,-1)-> 0~-1max
                page.setRotation(MAX_ROTATE * position);
            } else { // page：右边的界面。position的范围 a->b时(1,0)
                page.setPivotY(page.getHeight());
                // x:0~ 0.5w
                page.setPivotX(0.5f * page.getWidth() * (1 - position));
                // max,0
                page.setRotation(MAX_ROTATE * position);
            }
        } else { // [1, 无穷大]
            // 往右旋转了
            page.setRotation(MAX_ROTATE);
            page.setPivotY(page.getHeight());
            page.setPivotX(0);
        }
    }

}
